package com.polaris.live.im.sfs.bean.chat.ext

import android.os.Parcelable
import com.polaris.live.im.sfs.bean.live.ext.UserBasicVo

/**
 * CallMessagePayloadBean
 *
 * @author Created by 半仙 on 2023/10/12/012 13:55
 */
data class SingleMessagePayloadBean(
    //---------- 礼物消息
    /**
     * 送礼的个数
     */
    val giftAmount: Int? = null,
    /**
     * 如果消费的是背包，则需要传递该id
     */
    val giftBackpackId: Long? = null,
    //---------- 通话消息
    /**
     * 状态
     */
    val status: Int? = null,
    /**
     * 通话的来源类型
     */
    val userFrom: Int? = null,
    //---------- 通知消息
    /**
     * 是否存在背景
     */
    val background: Int? = null,
    //---------- 系统消息
    /**
     * banner
     */
    val banner: String? = null,
    /**
     * 底部
     */
    val footer: String? = null,
    //---------- 通用路由数据
    /**
     * 高亮数据
     */
    val highlight: List<RouterHighlight>? = null,
    /**
     * 路由数据
     */
    val router: Map<String, String>? = null,
    /**
     * 推送Id 当用户回复推送消息的时候需要带上
     */
    val pushDetailId: Long? = null,
    /**
     * flagGreetPushMessage 系统打招呼标识
     */
    var flagGreetPushMessage: String? = null,
    //---------- 邀请消息
    /**
     * 主播信息
     */
    val anchor: UserBasicVo? = null,
    /**
     * 直播类型
     */
    val liveType: Int? = null,
    /**
     * 房间id
     */
    var roomId: String? = null,
    /**
     * 邀请的liveId
     */
    var liveId: Long? = null,
    /**
     * 封面
     */
    var cover: String? = null,
    /**
     * 送礼物时客户端透传回服务端
     */
    val payload: String? = null,
)

@kotlinx.parcelize.Parcelize
data class RouterHighlight(
    /**
     * 高亮开始
     */
    val s: Int,
    /**
     * 高亮结束
     */
    val e: Int,
    /**
     * 颜色
     */
    val c: String? = null,
) : Parcelable

data class Highlight(
    /**
     * 高亮开始
     */
    val startIndex: Int,
    /**
     * 高亮结束
     */
    val endIndex: Int,
    /**
     * 颜色
     */
    val color: String? = null,
) {

    fun toRouter(): RouterHighlight {
        return RouterHighlight(
            s = startIndex,
            e = endIndex,
            c = color
        )
    }
}